home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / SHRTSTAR.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-03-19  |  6.7 KB  |  48 lines

  1. 1  DIMG$(16):RANDOMIZETIMER:KEYOFF:CLS:FORI=1TO8:READH$(I):NEXT:FORI=1TO16:READG$(I):NEXT:DATAWARP ENGINES,SHORT RANGE SENSORS,LONG RANGE SENSORS,PHASER CONTROL,PHOTON TUBES,DAMAGE CONTROL,SHIELD CONTROL,COMPUTER,ANTARES,RIGEL
  2. 2  DATAPROCYON,VEGA,CANOPUS,ALTAIR,SAGITTARIUS,POLLUX,SIRIUS,DENEB,CAPELLA,BETELGEUSE,ALDEBARAN,REGULUS,ARCTURUS,SPICA,0,-1,-1,-1,0,1,1,1,0,1,1,0,-1,-1,-1,0,1,1:DEFFND=SQR((K(I,1)-O)^2+(K(I,2)-P)^2):D$="NAVSRSLRSPHATORSHESTAGALHEL
  3. 3  DEF FNR=INT(RND*8+1):FOR I=1 TO 8:FOR J=1 TO 8:F=RND:M=-(F>0.98)-(F>0.95)-(F>0.8):K9=K9+M:B3=-(RND>0.96):B9=B9+B3:G(I,J)=M*100+B3*10+FNR:NEXT J,I:E=3000:B$=STRING$(32,"-"):DEF FNX(X)=-X*(X<=8)-8*(X>8):DEF FNY(X)=-X*(X>=1)-(X<1):T4=10:U=FNR
  4. 4  T=INT(RND*20+20)*100:T0=T:T9=25+INT(RND*10):V=FNR:O=FNR:P=FNR:FOR I=1 TO 2:FOR J=1 TO 9:READ C(J,I):NEXT J,I:T9=-T9*(K9<=T9)-(K9+1)*(K9>T9):F=-(B9=0 AND G(U,V)<200):G(U,V)=G(U,V)+F*100:K9=K9+F:B9=B9+F:G(U,V)=G(U,V)+F*10:U=FNR:V=FNR
  5. 5  K7=K9:PRINT"DESTROY"K9"KLINGON WARSHIPS IN"T9"DAYS WITH"B9"STARBASE(S)":M=0:B3=0:T1=0.5*RND:Z(U,V)=G(U,V):E$=STRING$(12,"-"):F$="   ":I$="+++":J$=" * ":K$="<*>":L$=">|<":DEF FNA(X)=-((X>8)OR F=1):DEF FNB(X)=-((X<1)OR F=1):GOSUB 47:LP=1
  6. 6  FORI=1TO3:FORJ=1TO3:K(I,J)=0:NEXTJ,I:M=INT(G(U,V)*0.01):B3=INT(G(U,V)*0.1)-10*M:S3=G(U,V)-100*M-10*B3:Q$=STRING$(192," "):A$=K$:K=O:Z=P:GOSUB46:FORI=1TOM:GOSUB45:A$=I$:K=G:Z=A:GOSUB46:K(I,1)=G:K(I,2)=A:K(I,3)=100*RND:NEXT
  7. 7  FORI=1TOS3:GOSUB45:A$=J$:K=G:Z=A:GOSUB46:NEXT:FORI=1TOB3:GOSUB45:A$=L$:K=G:Z=A:GOSUB46:NEXT:GOSUB40:IFM>0THENPRINT"KLINGON ALERT":IFS<201THENPRINT"SHIELDS LOW
  8. 8  IF S+E<10 OR(E<10 AND D(7)<0)THEN PRINT"SHIP STRANDED IN SPACE. YOU HAVE INSUFFICIENT ENERGY TO":PRINT"MANEUVER. SHIELDS CANNOT BE CROSS-CIRCUITED":GOTO 38
  9. 9  INPUT"COMMAND",A$:I=INSTR(D$,A$):I=(I+2)/3:IF I=2 THEN GOSUB 40:GOTO 9 ELSE IF INT(I)=I AND I THEN ON I GOTO 11,9,21,22,26,31,32,44
  10. 10  FOR I=1 TO 8:PRINT MID$(D$,I*3-2,3)" - "H$(I):NEXT:GOTO 8
  11. 11  INPUT"COURSE (1-8)";W:IFW<1ORW>8THENPRINT"INCORRECT COURSE":GOTO8 ELSEX$="WARP FACTOR (0-"+MID$(" 8.5",(1-(D(1)<0))*2-1,2)+")":PRINTX$;:INPUTC:IFD(1)<0ANDC>0.5THENPRINT"ENGINES DAMAGED: MAX. WARP SPEED IS .5":GOTO8
  12. 12  IFC<=0ORC>8THENPRINT"CANT DO WARP"C:GOTO8 ELSEN=INT(C*8+0.5):IFE+S-N<0THENPRINT"NOT ENOUGH ENERGY":GOTO8 ELSEFORI=1TOM:IFK(I,3)>0THENA$=F$:K=K(I,1):Z=K(I,2):GOSUB46:GOSUB45:K(I,1)=K:K(I,2)=Z:A$=I$:GOSUB46
  13. 13  NEXT:GOSUB35:F=0:L=C:L=-L*(C<1)-(C>=1):FORI=1TO8:IFD(I)<0THEND(I)=D(I)+L:IFD(I)>0THENIFF<>1THENF=1:G=I:PRINTH$(G)" REPAIR COMPLETED
  14. 14  D(I)=-D(I)*(D(I)>=0ORD(I)<=0)+0.1*(D(I)>-0.1ANDD(I)<0):NEXT:IFRND>0.2THEN15 ELSEG=FNR:IFRND<0.6THEND(G)=D(G)-(RND*5+1):PRINTH$(G)" DAMAGED":GOTO15 ELSED(G)=D(G)+RND*3+1:PRINTH$(G)" STATE OF REPAIR IMPROVED
  15. 15  A$=F$:K=INT(O):Z=INT(P):GOSUB46:X1=C(W,1)+(C(W+1,1)-C(W,1))*(W-INT(W)):X=O:Y=P:X2=C(W,2)+(C(W+1,2)-C(W,2))*(W-INT(W)):T3=U:T2=V:FORI=1TON:O=O+X1:P=P+X2:IFO>=1ANDO<9ANDP>=1ANDP<9THEN18 ELSEX=8*U+X+N*X1
  16. 16  Y=8*V+Y+N*X2:U=INT(X/8):V=INT(Y/8):O=INT(X-U*8):P=INT(Y-V*8):U=U+(O=0):O=-O*(O>0 AND O<9)-8*(O<1)-1*(O>8):V=V+(P=0):P=-P*(P>0 AND P<9)-8*(P<1)-1*(P>8):U=-U*(U>0 AND U<9)-8*(U<1)-1*(U>8):V=-V*(V>0 AND V<9)-8*(V<1)-1*(V>8)
  17. 17  IF T>T0+T9 THEN 38 ELSE IF 8*U+V=8*T3+T2 THEN 19 ELSE T=T+1:GOSUB 20:M=0:B3=0:S3=0:T1=0.5*RND:Z(U,V)=G(U,V):PRINT"ENTERING "+G$(U-8*(V>4))+" "+MID$("I  II IIIIV  ",(V+4*(V>4))*3-2,3)+" QUADRANT":GOTO 6
  18. 18  IFMID$(Q$,INT(O)*24+INT(P)*3-26,2)<>"  "THENO=INT(O-X1):P=INT(P-X2):PRINT"ENGINES SHUT DOWN AT SECTOR"O","P ELSENEXT:O=INT(O):P=INT(P)
  19. 19  A$=K$:K=INT(O):Z=INT(P):GOSUB 46:GOSUB 20:T=T-0.1*INT(C*10)*(C<1)-1*(C>=1):IF T>T0+T9 THEN 38 ELSE GOSUB 40:GOTO 8
  20. 20  E=E-N-10:IFE>=0THENRETURN ELSEPRINT"SHIELD ENERGY DIVERTED TO ENGINES":S=S+E:E=0:S=-S*(S>0):RETURN
  21. 21  IF D(3)<0 THEN PRINT"LONG RANGE SENSORS OUT":GOTO 8 ELSE PRINT"LONG RANGE SCAN":FOR I=U-1 TO U+1:FOR J=V-1 TO V+1:Z(I,J)=G(I,J):PRINT MID$("***"+RIGHT$(STR$(G(I,J)+1000),3),(2+(I<1 OR I>8 OR J<1 OR J>8))*3-2,3)":";:NEXT:PRINT:PRINT E$:NEXT:GOTO 8
  22. 22  IFD(4)<0THENPRINT"PHASERS INOPERATIVE":GOTO8 ELSEIFM=0THENPRINT"NO KLINGONS":GOTO8 ELSEINPUT"UNITS TO FIRE",X:IFX<1ORE-X<1THEN8 ELSEE=E-X:IFD(8)<0THENPRINT"COMPUTER FAILURE LOWERS ACCURACY":X=X*RND
  23. 23  F=INT(X/M):FORI=1TO3:IFK(I,3)<=0THEN25 ELSEH=INT((F/FND)*(RND+2)):IFH<0.16*K(I,3)THENPRINT"NO DAMAGE TO ENEMY AT"K(I,1)","K(I,2) ELSEK(I,3)=K(I,3)-H:PRINTH"UNITS HIT ON KLINGON AT"K(I,1)","K(I,2)
  24. 24  IFK(I,3)<=0THENPRINT"***KLINGON DESTROYED***":M=M-1:K9=K9-1:K=K(I,1):Z=K(I,2):A$=F$:GOSUB46:K(I,3)=0:G(U,V)=G(U,V)-100:Z(U,V)=G(U,V):IFK9<1THEN39
  25. 25  NEXT:GOSUB35:GOTO8
  26. 26  IFT4<=0THENPRINT"NO TORPEDOES":GOTO8 ELSEIFD(5)<0THENPRINT"TUBES INOPERABLE":GOTO8 ELSEINPUT"COURSE";W:IFW<1ORW>8THENPRINT"BAD COURSE":GOTO8 ELSEX1=C(W,1)+(C(W+1,1)-C(W,1))*(W-INT(W)):T4=T4-1:E=E-1:X=O:Y=P
  27. 27  X2=C(W,2)+(C(W+1,2)-C(W,2))*(W-INT(W)):A$=F$:PRINT"TRACK:":B=1:WHILEB:X=X+X1:Y=Y+X2:F=INT(X+0.5):L=INT(Y+0.5):IFF<1ORF>8ORL<1ORL>8THENPRINT"MISSED":GOTO8 ELSEPRINTF","L:K=X:Z=Y:GOSUB47:WEND:A$=J$:K=X:Z=Y:GOSUB47
  28. 28  IFBTHENPRINT"STAR UNFAZED":GOSUB35:GOTO8 ELSEA$=I$:K=X:Z=Y
  29. 29  GOSUB47:A$=F$:IFBTHENPRINT"*** KLINGON DESTROYED ***":M=M-1:K9=K9-1:IFK9<1THEN39 ELSEFORI=1TO3:IFF=K(I,1)ANDL=K(I,2)THENK(I,3)=0:K=X:Z=Y ELSENEXT ELSEPRINT"*** STARBASE DESTROYED ***":B3=B3-1:B9=B9-1:D0=0:K=X:Z=Y
  30. 30  GOSUB46:G(U,V)=M*100+B3*10+S3:Z(U,V)=G(U,V):GOSUB35:GOTO8
  31. 31  IFD(7)<0THENPRINT"SHIELDS INOPERABLE":GOTO8 ELSEPRINTE+S"UNITS AVAILABLE":INPUT"NO. OF UNITS TO SHIELDS",X:IFX<0ORX=STHEN8 ELSEIFX>E+STHENPRINT"NOT ENOUGH ENERGY":GOTO8 ELSEE=E+S-X:S=X:PRINT"SHIELDS AT"S:GOTO8
  32. 32  PRINT"STATUS REPORT":PRINT"KLINGON(S) LEFT:"K9:PRINT"MISSION MUST BE FINISHED IN"0.1*INT((T0+T9-T)*10)"STARDATES":PRINT"THERE ARE"B9"STARBASE(S) IN THE GALAXY":IFD(6)<0THENPRINT"REPORT UNAVAILABLE":IFD0=0THEN8
  33. 33  PRINT"DEVICE"SPC(13)"STATE OF REPAIR":FORG=1TO8:PRINTH$(G)SPC(25-LEN(H$(G)))INT(D(G)*100)*0.01:NEXT:IFD0=0THEN8 ELSEL=0:FORI=1TO8:L=L-0.1*(D(I)<0):NEXT:IFL=0THEN8 ELSEL=L+T1:IFL>=1THENL=0.9
  34. 34  PRINT"STANDBY TO EFFECT REPAIRS ON YOUR SHIP":PRINT"ESTIMATED TIME TO REPAIR:"0.01*INT(100*L)"STARDATES":INPUT"WILL YOU AUTHORIZE THE REPAIR (Y/N)";A$:IFA$="Y"THENFORI=1TO8:D(I)=-D(I)*(D(I)>=0):NEXT:T=T+L+0.1:GOTO8 ELSE8
  35. 35  IFM<1THENRETURN ELSEIFD0=1THENPRINT"STARBASE SHIELDS PROTECT THE ENTERPRISE":RETURN ELSEFORI=1TO3:IFK(I,3)<=0THEN37 ELSEH=INT((K(I,3)/FND)*(2+RND)):S=S-H:K(I,3)=K(I,3)/(3+RND(0)):PRINTH"UNITS HIT ON SHIP ";
  36. 36  PRINT"FROM SECTOR"K(I,1)","K(I,2):IF S<1 THEN LQ=1:GOTO 38 ELSE PRINT"SHIELDS DOWN TO"S"UNITS":IF H>21 AND(RND<0.6 AND H/S>0.02)THEN G=FNR:D(G)=D(G)-H/S-0.5*RND:PRINT"DAMAGE CONTROL REPORTS "H$(G)" DAMAGED BY THE HIT
  37. 37  NEXT:RETURN
  38. 38  IF LQ THEN PRINT"THE ENTERPRISE HAS BEEN DESTROYED. THE FEDERATION WILL BE CONQUERED":END ELSE PRINT"IT IS STARDATE"T"THERE WERE"K9"KLINGON BATTLE CRUISERS":PRINT"LEFT AT THE END OF YOUR MISSION":END
  39. 39  PRINT"CONGRATULATIONS. THE LAST KLINGON BATTLE CRIUSER HAS BEEN DESTROYED":PRINT"YOUR EFFICIENCY RATING IS"1000*(K7/(T-T0))^2:END
  40. 40  FORI=O-1TOO+1:FORJ=P-1TOP+1:IFINT(I+0.5)>=1ANDINT(I+0.5)<=8ANDINT(J+0.5)>=1ANDINT(J+0.5)<=8THENA$=L$:K=I:Z=J:GOSUB47:IFBTHEND0=1:C$="DOCKED":E=3000:T4=10:PRINT"SHIELDS DROPPED FOR DOCKING":S=0:GOTO42
  41. 41  NEXTJ,I:D0=0:C$=MID$("GREEN  RED",(1-(M<>0))*5-4,5):C$=MID$(C$+" YELLOW",(1-(E<3000*0.1))*6-5,6):IFD(2)<0THENPRINT"SHORT RANGE SENSORS ARE OUT":RETURN
  42. 42  PRINT B$:FOR I=1 TO 8:FOR J=(I-1)*24+1 TO(I-1)*24+22 STEP 3:PRINT" "MID$(Q$,J,3);:NEXT:PRINT MID$("STARDATE CONDITIONQUADRANT SECTOR   TORPEDOESENERGY   SHIELDS  KLINGONS ",I*9-8,9)" ";
  43. 43  PRINT MID$(FNQ$(INT(T))+C$+" "+STR$(U)+","+STR$(V)+" "+STR$(O)+","+STR$(P)+FNQ$(T4)+FNQ$(INT(E))+FNQ$(INT(S))+FNQ$(K9),I*6-5,6):NEXT:PRINT B$:RETURN
  44. 44  IFD(8)<0THENPRINTH$(8)" DISABLED":GOTO8 ELSEPRINT"GALACTIC RECORD":FORI=1TO8:FORJ=1TO8:PRINTMID$("***"+RIGHT$(STR$(Z(I,J)+1000),3),(1-(Z(I,J)<>0))*3-2,3)" || ";:NEXT:PRINT:PRINTSTRING$(55,"-"):NEXT:GOTO8
  45. 45  B=0:A$=F$:WHILEB=0:G=FNR:A=FNR:K=G:Z=A:GOSUB47:WEND:RETURN
  46. 46  MID$(Q$,INT(Z-0.5)*3+INT(K-0.5)*24+1,3)=A$:RETURN
  47. 47  IF LP THEN B=-(MID$(Q$,(INT(Z+0.5)-1)*3+(INT(K+0.5)-1)*24+1,3)=A$):RETURN ELSE DEF FNQ$(X)=STRING$(6-LEN(STR$(X))," ")+STR$(X):RETURN
  48.